/*
    7-4 字符串模式匹配
给定主串s和模式串p，编写程序输出p在s中出现的首位置，若p不在s中则输出-1。字符串下标从0开始。

输入格式:
输入为2行，第1行主串s，第2行为模式串p。主串和模式串长度不超过100000。

输出格式:
输出为2行，第1行为若干整数，表示模式串p的失败函数值，每个整数后一个空格；
            第2行为一个整数，表示p在s中出现的首位置，若p不在s中则输出-1。

输入样例:
        qwerabcabhlk
        abcab

输出样例:
        -1 -1 -1 0 1 
        4
*/  
#include <bits/stdc++.h>
using namespace std;
void get_next(string T,int next[])//求解next值表函数  （此函数运用了递归原理）
{ int i=0,j=-1;                   
  next[0]=-1;   //next[0]初始化都为-1      
    while(i<T.length())             
    { if(j==-1||T[i]==T[j])       
        next[i++]=j++;
        else
        j=next[j]; //如果不等，j回溯  
    } 
} 
int main()
{	string S,T;
	cin>>S>>T;
	int i,x=S.find(T),len=T.length();
	int next[len];
	get_next(T,next);
	for(i=0;i<len;i++)
	cout<<next[i]<<" ";
    cout<<endl<<x; 
	return 0;
}
